package cn.iocoder.yudao.module.resource.service.message;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.resource.api.enums.MessageContentTypeEnum;
import cn.iocoder.yudao.module.resource.api.enums.MessageSourceTypeEnum;
import cn.iocoder.yudao.module.resource.controller.admin.message.vo.MessagePageReqVO;
import cn.iocoder.yudao.module.resource.dal.dataobject.message.MessageDO;

import java.util.List;

/**
 * 消息 Service 接口
 *
 * @author lizhongwen
 */
public interface MessageService {

    void deleteMessageByUserId(Long userId);

    /**
     * 创建消息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    MessageDO createMessage(String messageId,
                            Long userId,
                            MessageSourceTypeEnum senderType,
                            MessageContentTypeEnum contentType,
                            String gameMatchId,
                            String wsSessionId,
                            Integer roleId,
                            String userText,
                            String replyText,
                            List<MessageDO.AudioData> audioDataList,
                            Integer responseTimeMs);

    int updateAudioDataById(String messageId, List<MessageDO.AudioData> audioDataList);

    /**
     * 获得消息
     *
     * @param id 编号
     * @return 对话
     */
    MessageDO getMessage(String id);

    MessageDO getMessageByUserId(Long userId, String id);


    /**
     * 获得消息分页
     *
     * @param pageReqVO 分页查询
     * @return 消息分页
     */
    PageResult<MessageDO> getMessagePage(MessagePageReqVO pageReqVO);

    PageResult<MessageDO> getMessagePageByUserId(Long userId, MessagePageReqVO pageReqVO);

}